什么是代码的可测试性
代码的可测试性就是根据代码编写单元测试的容易程度。对测试性差的代码往往难以编写单元测试,因为他们没有遵循设计原则与思想,比如基于接口而非实现编程,依赖反转等。
如何编写可测试性的代码
- 依赖注入
通过依赖注入的形式引入其他类、方法,可以便于外部服务的Mock.
- Mock
对于外界服务,我们不关系外部系统服务的正确性,所以我们对外部服务进行Mock,然后采用依赖注入的形式
- 抽象封装
比如代码中有一段是关于日期过期的判断,这种情况可以将这块代码封装起来。
1 | Transction transaction = new Transaction(null, buyerId, sellerId, productId, orderId) { protected boolean isExpired() { return true; } }; |
测试性差的代码
- 代码中包含未决行为逻辑
- 滥用可变全局变量
- 滥用静态方法
- 使用复杂的继承关系
- 高度耦合的代码